package edu.the.last.chord.factory;

import java.util.ArrayList;
import java.util.List;

import edu.the.last.chord.factory.random.RandomChordFactory;
import edu.the.last.chord.factory.simple.SimpleChordFactory;

/**
 * the "core" of the factory
 * 
 * @author albertcsani
 * 
 */
public abstract class ChordFactory {
	public static ChordFactory getRandomInstance() {
		return new RandomChordFactory();
	}

	public static ChordFactory getSimpleInstance() {
		return new SimpleChordFactory();
	}

	/**
	 * This should return a list of all the classes implementing the
	 * ChordInterface interface
	 * 
	 * @return a list whit Chordfactory elemnts
	 */
	public static List<ChordFactory> getInstances() {
		List<ChordFactory> list = new ArrayList<ChordFactory>();
		list.add(new SimpleChordFactory());
		list.add(new RandomChordFactory());
		return list;
	}

	public abstract ChordInterface getChords();
}
